The discussion below is merely provided for general background information and is not intended to be used as an aid in determining the scope of the claimed subject matter.
Natural language software applications refer to applications adapted to receive spoken utterances or text input that parallel the way a person speaks. However, conventional applications that use speech recognition do so by defining the words for which the application should listen, by defining how those words can be combined, and by defining the semantic meaning of any particular combination of those words.
Generally, the term grammar refers to the rules and underlying principles that define the structure of any given language, and grammar can serve as the mechanism by which natural language applications perform these functions. In practice, the natural language programmer codes the grammar, which is then consumed by a speech recognizer. When a user accesses the natural language program and says something that is within the set of words and rules defined by the grammar, the speech recognizer maps those words to the strings or other types defined within the grammar. The speech recognizer then informs the application what was said, as well as any corresponding semantic information as defined by the grammar, often by providing mapped objects to the application for further processing.
Such conventional applications require the software developer to code for a great deal of text and string text manipulation. In order to code effectively, the developer needs to have a very good understanding of grammars in general and of the inner workings of the particular grammar that the developer is using. Unfortunately, such grammatical insight often is not part of the programmer's knowledge base.
To speed the overall development cycle, developers often want to use some variant of an existing grammar, by editing the existing grammar and/or adding to it. However, editing an existing grammar requires the developer to spend time learning the structure, which is time that could otherwise be spent implementing software enhancements. Though conventional technology allows a developer to reference an existing grammar from another grammar, the reference is not transparent to the calling program because it effects the way in which the semantics of the referenced grammar are returned.